package org.go.spi.impl;

import java.io.InputStream;
import java.net.URL;

import org.go.spi.ClassLoadHelper;

public class ThreadContextClassLoadHelper implements ClassLoadHelper {

	/**
	 * Enable sharing of the class-loader with 3rd party.
	 *
	 * @return the class-loader user be the helper.
	 */
	@Override
	public ClassLoader getClassLoader() {
		return Thread.currentThread().getContextClassLoader();
	}

	/**
	 * Finds a resource with a given name. This method returns null if no
	 * resource with this name is found.
	 * @param name name of the desired resource
	 * @return a java.net.URL object
	 */
	@Override
	public URL getResource(String name) {
		return getClassLoader().getResource(name);
	}

	/**
	 * Finds a resource with a given name. This method returns null if no
	 * resource with this name is found.
	 * @param name name of the desired resource
	 * @return a java.io.InputStream object
	 */
	@Override
	public InputStream getResourceAsStream(String name) {
		return getClassLoader().getResourceAsStream(name);
	}

	/**
	 * Called to give the ClassLoadHelper a chance to initialize itself,
	 * including the opportunity to "steal" the class loader off of the calling
	 * thread, which is the thread that is initializing Quartz.
	 */
	@Override
	public void initialize() {
	}

	/**
	 * Return the class with the given name.
	 */
	@Override
	public Class loadClass(String name) throws ClassNotFoundException {
		return getClassLoader().loadClass(name);
	}
}
